#ifndef __PAGE_MANAGER_H__
#define __PAGE_MANAGER_H__

#include <iostream>
#include <stdio.h>
#include <vector>
#include "point.h"

// 页面基类
class BasePage
{
public:
    virtual ~BasePage() = default;
    // 处理触摸事件，返回是否处理成功
    virtual bool handleTouch(const Point &touch_point) = 0;
    virtual void show() = 0; // 显示页面
    virtual void hide() = 0; // 隐藏页面
};

// 页面管理类
class PageManager
{

    PageManager() = default;
    ~PageManager();

public:
    static PageManager *instance();
    static void delInstance();

    void addPage(BasePage *page);    // 添加页面
    void switchPage(BasePage *page); // 切换到指定页面
    BasePage *getCurrentPage();      // 获取当前页面

    bool handleTouchEvent(const Point &touch_point); // 处理触摸事件

private:
    static PageManager *m_instance;
    std::vector<BasePage *> pages;    // 页面容器
    BasePage *current_page = nullptr; // 当前显示的页面
};

#endif